package com.example.app2024.draw;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;


public class MyView extends SurfaceView implements Callback, OnTouchListener
{

      private Paint p = new Paint();
      private Path path = new Path();

      public MyView(Context context, AttributeSet attrs)
      {
            super(context, attrs);
            getHolder().addCallback(this);
            p.setColor(Color.RED);
            p.setTextSize(10);
            p.setStrokeWidth(8);
            p.setAntiAlias(true);
            p.setStyle(Style.STROKE);
            setOnTouchListener(this);

      }

      public void draw()
      {
            Canvas canvas = getHolder().lockCanvas();
            canvas.drawColor(Color.WHITE);
            canvas.drawPath(path, p);
            getHolder().unlockCanvasAndPost(canvas);
      }


      public void clear()
      {
            path.reset();
            draw();
      }

      @Override
      public void surfaceCreated(SurfaceHolder holder)
      {
            draw();
      }

      @Override
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
      {
            // TODO Auto-generated method stub

      }

      @Override
      public void surfaceDestroyed(SurfaceHolder holder)
      {
            // TODO Auto-generated method stub

      }

      @Override
      public boolean onTouch(View v, MotionEvent event)
      {

            switch (event.getAction())
            {
                  case MotionEvent.ACTION_DOWN:
                        path.moveTo(event.getX(), event.getY());
                        draw();
                        break;

                  case MotionEvent.ACTION_MOVE:
                        path.lineTo(event.getX(), event.getY());
                        draw();
                        break;
            }

            return true;
      }

}
